#include<iostream>
using namespace std;
//final 最后  修饰函数或者修饰类 
//final只能修饰虚函数和类  限制在子类中不能重写父类的虚函数 
//关键字必须写在函数名的后面
//一般不在基类中添加fianl
//作用防止函数被重写  或类被继承
class Base
{
    public:
    virtual void test()
    {
        cout << "Base class .." << endl;
    }
};
class Child:public Base
{
    public:
    void test() final //表示最后一次  son中无法重写
    {
        cout << "Child class .." << endl;
    }
};
// class Son:public Child 
// {
//     public:
//     // void test()
//     // {

//     // }
// };
// //用final修饰类也是一样
// //写在类的后面   表示该类不能被继承
// class Base1 final
// {
//     public:
//         int a;

// };

// class Son//:public Base1
// {
// public: 
//     int b;
// };

int main()
{
    Child c;
    Base  &b = c;
    //用父类指针或者引用接受子类对象  实现类的继承多态
    b.test();
    // b.test();
    //c.test();
    return 0;
}